﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Chilis.Marketing.Common;
using Chilis.Marketing.Business.Logic;
using Chilis.Marketing.Business.Entity;
using System.Data;
using System.Globalization;
using System.Text;

public partial class Opera_PlanificarCampanha : System.Web.UI.Page
{
    #region ATRIBUTOS
    
    private BLCampanha campanhaBL;

    #endregion

    #region PROPIEDADES
    #endregion

    #region METODOS

    public BECampanha ObtenerCampanhaBE_WebForm()
    {
        BECampanha campanhaBE = new BECampanha();
        campanhaBE.Estado = Constantes.ESTADO.ACTIVO;
        campanhaBE.Order_by = (char)Constantes.ORDENAR_POR.CODIGO;
        campanhaBE.De_forma = (char)Constantes.DE_FORMA.ASCENDENTE;
        return campanhaBE;
    }

    public void CargarGrillaListado(bool deBuscar)
    {
        if (deBuscar == true)
        {
            this.gvCampanha.PageIndex = 0;
        }

        BECampanha campanhaBE = this.ObtenerCampanhaBE_WebForm();
        this.campanhaBL = new BLCampanha();
        DataTable dt = this.campanhaBL.buscarCampanhas(campanhaBE);
        this.gvCampanha.DataSource = dt;
        this.gvCampanha.DataBind();
    }

    private void LimpiarFormulario()
    {
        try
        {
            this.txtIdResponsable.Value = string.Empty;
           
        }
        catch (Exception)
        {
        }
    }

    private void ProcesarAnularCampanha(string idCampanha)
    {
        BLCampanha campanhaBL = new BLCampanha();
        BECampanha campanhaBE = new BECampanha();
        campanhaBE.IdCampanha = int.Parse(idCampanha);
        campanhaBE.EstadoCampanha = Constantes.ESTADO_CAMPANHA.ANULADO;
        campanhaBL.actualizarEstadoCampanha(campanhaBE);

        this.CargarGrillaListado(true);
    }

    private void ConfigurarAnularCampanha(GridViewRow fila)
    {
        /*
        ImageButton btnAnular = (ImageButton)fila.FindControl("btnAnular");
        if (btnAnular != null)
        {
        StringBuilder click = new StringBuilder();
        string idCampanha = ((Label)e.Row.FindControl("lblCodigo")).Text;

        click.AppendLine(String.Format("AnularCampanha('{0}')", idCampanha));
        btnAnular.Attributes.Add("onclick", click.ToString());
        }
         */
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnEliminar = (ImageButton)fila.FindControl("btnAnular");
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return AnularCampanha('{0}')", lblTempCodigo.Text));
        imgTempBtnEliminar.Attributes.Add("onclick", click.ToString());
    }

    private void ConfigurarVisualizacionOpciones(GridViewRow fila)
    {
        //===========================================================
        //REVISAR LA VISUALIZACIÓN DE ACUERDO AL ESTADO DE LA CAMPANHA
        //===========================================================
        Label lblTempIdEstado = (Label)fila.FindControl("lblIdEstado");
        Label lblTempIdCreativo = (Label)fila.FindControl("lblIdCreativo");
        Constantes.ESTADO_CAMPANHA estadoCampanha = Constantes.ObtenerEnumEstadoCampanha(lblTempIdEstado.Text);

        ImageButton imgTempBtnVerDetalle = (ImageButton)fila.FindControl("btnVerDetalle");
        ImageButton imgTempBtnModificar = (ImageButton)fila.FindControl("btnModificar");
        ImageButton imgTempBtnAsociar = (ImageButton)fila.FindControl("btnAsociar");
        ImageButton imgTempBtnAprobar = (ImageButton)fila.FindControl("btnAprobar");
        ImageButton imgTempBtnAnular = (ImageButton)fila.FindControl("btnAnular");
        ImageButton imgTempBtnAsignarArte = (ImageButton)fila.FindControl("btnAsignarArte");

        switch (estadoCampanha)
        {
            case Constantes.ESTADO_CAMPANHA.NINGUNO:
                break;
            case Constantes.ESTADO_CAMPANHA.REGISTRADO:
                break;
            case Constantes.ESTADO_CAMPANHA.EN_PLANIFICACION:
                break;
            case Constantes.ESTADO_CAMPANHA.EN_EVALUACION:
                break;
            case Constantes.ESTADO_CAMPANHA.PENDIENTE:
                break;
            case Constantes.ESTADO_CAMPANHA.APROBADO:
                imgTempBtnModificar.Visible = false;
                imgTempBtnAsociar.Visible = false;
                imgTempBtnAprobar.Visible = false;
                imgTempBtnAnular.Visible = false;
                imgTempBtnAsignarArte.Visible = false;
                break;
            case Constantes.ESTADO_CAMPANHA.ANULADO:
                imgTempBtnModificar.Visible = false;
                imgTempBtnAsociar.Visible = false;
                imgTempBtnAprobar.Visible = false;
                imgTempBtnAnular.Visible = false;
                imgTempBtnAsignarArte.Visible = false;
                break;
            default:
                break;
        }

        int tempIdCreativo = Constantes.idValorNulo;
        int.TryParse(lblTempIdCreativo.Text, out tempIdCreativo);

        if (tempIdCreativo == 0)
        {
            imgTempBtnAsignarArte.Visible = false;
        }
    }

    #endregion

    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            ControlHelper.RegisterClientScriptFile(this, "jquery.js", true);
            ControlHelper.RegisterClientScriptFile(this, "json2.js", true);
            ControlHelper.RegisterClientScriptFile(this, "thickbox.js", true);
            ControlHelper.RegisterClientScriptFile(this, "campanha.js", true);
            if (!Page.IsPostBack)
            {
                this.CargarGrillaListado(false);
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_CargaRegistros + "&descError=" + ex.Message, false);
        }
    }
    protected void btnAgregar_Click(object sender, EventArgs e)
    {
        Response.Redirect("DetCampanha.aspx?acc=" + Constantes.ACCION.NUEVO.ToString("D"), false);
    }
    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        try
        {
            this.CargarGrillaListado(true);
        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_CargaRegistros + "&descError=" + ex.Message, false);
        }
    }
    protected void btnLimpiar_Click(object sender, EventArgs e)
    {
        this.LimpiarFormulario();
    }

    protected void gvCampanha_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
        accion = Constantes.ObtenerEnumAccion(e.CommandName);

        if (accion == Constantes.ACCION.NINGUNO)
        {
            return;
        }

        GridViewRow fila = ((GridViewRow)((Control)e.CommandSource).NamingContainer);
        string idCampanha = ((Label)fila.FindControl("lblCodigo")).Text;

        switch (accion)
        {
            case Constantes.ACCION.NINGUNO:
                break;
            case Constantes.ACCION.VER:
                Response.Redirect("DetCampanha2.aspx?acc=" + Constantes.ACCION.VER.ToString("D") + "&id=" + idCampanha);
                break;
            case Constantes.ACCION.NUEVO:
                break;
            case Constantes.ACCION.MODIFICAR:
                Response.Redirect("DetCampanha.aspx?acc=" + Constantes.ACCION.MODIFICAR.ToString("D") + "&id=" + idCampanha);
                break;
            case Constantes.ACCION.ELIMINAR:
                Response.Redirect("DetCampanha.aspx?acc=" + Constantes.ACCION.ELIMINAR.ToString("D") + "&id=" + idCampanha);
                break;
            case Constantes.ACCION.ASOCIAR:
                Response.Redirect("DetCampanha.aspx?acc=" + Constantes.ACCION.ASOCIAR.ToString("D") + "&id=" + idCampanha);
                break;
            case Constantes.ACCION.APROBAR:
                Response.Redirect("DetCampanha.aspx?acc=" + Constantes.ACCION.APROBAR.ToString("D") + "&id=" + idCampanha);
                break;
            case Constantes.ACCION.GENERAR_REPORTE:
                break;
            case Constantes.ACCION.ANULAR:
                this.ProcesarAnularCampanha(idCampanha);
                break;
            case Constantes.ACCION.ASIGNAR_ARTE:
                Response.Redirect("Arte.aspx?acc=" + Constantes.ACCION.APROBAR.ToString("D") + "&idcmp=" + idCampanha);
                break;
            default:
                break;
        }
    }
    protected void gvCampanha_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.gvCampanha.PageIndex = e.NewPageIndex;
        this.CargarGrillaListado(false);
    }

    protected void gvCampanha_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            GridViewRow fila = e.Row;
            this.ConfigurarAnularCampanha(fila);

            this.ConfigurarVisualizacionOpciones(fila);
        }
    }

    #endregion

 }